1. Field of the Invention
The present invention relates generally to image/video display and processing systems, and in particular, to a method, apparatus, and article of manufacture for protecting proprietary graphical processing unit (GPU) software from external access.
2. Description of the Related Art
Current graphics processing units (GPUs) (also referred to as video processing units [VPUs], graphics cards, or video cards) can be programmed in order to customize their functionality. GPU programming is a very powerful and versatile technology because it allows software developers to implement complex imaging and data processing algorithms and execute the algorithms at high speeds on a computer workstation's GPU. However, the source code of a GPU program must be loaded (and compiled) by the operating system and/or a display driver at application run time. As used herein, a display driver comprises software provided by a GPU vendor to facilitate the operation of the GPU. Accordingly, the uncompiled source code of the GPU program must be included in the software that is distributed to end-users (e.g., as text files or embedded in binary files). Such a distribution of GPU programming exposes a serious risk of reverse engineering and plagiarism of proprietary source code. Such problems may be better understood with an explanation of graphics processing units and prior art distribution methods.
A GPU is a specialized logic chip or card that is devoted to rendering 2D or 3D images. Display adapters often contain one or more GPUs for fast graphics rendering. The more sophisticated and faster the GPUs, combined with the architecture of the display adapter, the more realistically games and video are displayed. GPUs may each have particular video/display capabilities for use in different environments. For example, GPU may provide capabilities for texturing, shading, filtering, blending, rendering, interlacing/de-interlacing, scaling, multiple GPU parallel execution, color correction, encoding, TV output, etc.
To customize the functionality and capabilities of a GPU, GPU programming is used. Considerable amounts of time and money may be incurred in developing GPU programs. Accordingly, it may be desirable to retain such proprietary GPU programs as trade secrets. However, as described above, the source code of the GPU must be loaded (and compiled) by an operating system at run time. Therefore, the uncompiled source code of the GPU program may be easily accessible (e.g., to an end-user or developer). In this regard, certain keywords are often found in a GPU program. Accordingly, the executable can merely be scanned for such keywords and the GPU program can be found and easily replicated.
Accordingly, what is needed is a framework for protecting GPU programs in computer software executable files.